﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Noris.Schedule.Support.Core
{
	/// <summary>
	/// Zcela jednoduchá třída pro uchování textu a libovolného objektu (Tag).
	/// Typické použití: jako položka v Listu, ComboBoxu atd.
	/// Zadaný text se vrací v metodě ToString(), kterou tyto vizuální objekty používají pro získání vizuální reprezentace objektu.
	/// Přiložený Tag je určen k uložení libovolného datového objektu, který se předává aplikaci jako data, která si uživatel vybral tím, že vybral daný text.
	/// </summary>
	public class StringTag
	{
		/// <summary>
		/// Konstruktor. Zadává se text a přiložený objekt s daty.
		/// </summary>
		/// <param name="text"></param>
		/// <param name="tag"></param>
		public StringTag(string text, object tag)
		{
			_Text = text;
			_Tag = tag;
			_ToolTip = null;
		}
		/// <summary>
		/// Konstruktor. Zadává se text a přiložený objekt s daty.
		/// </summary>
		/// <param name="text"></param>
		/// <param name="tag"></param>
		public StringTag(string text, object tag, string toolTip)
		{
			_Text = text;
			_Tag = tag;
			_ToolTip = toolTip;
		}
		/// <summary>
		/// Vizualizace.
		/// </summary>
		/// <returns></returns>
		public override string ToString()
		{
			return this.Text;
		}
		/// <summary>
		/// Text v tomto objektu
		/// </summary>
		public string Text { get { return _Text; } set { _Text = value; } }
		private string _Text;
		/// <summary>
		/// Tooltip v tomto objektu. Je vhodné využít property this.HasToolTip, která vrací true, když ToolTip je neprázdný string.
		/// </summary>
		public string ToolTip { get { return _ToolTip; } set { _ToolTip = value; } }
		private string _ToolTip;
		/// <summary>
		/// true, pokud property ToolTip je neprázdná.
		/// </summary>
		public bool HasToolTip { get { return !String.IsNullOrEmpty(_ToolTip); } }
		/// <summary>
		/// Data v tomto objektu
		/// </summary>
		public object Tag { get { return _Tag; } set { _Tag = value; } }
		private object _Tag;
	}
}
